package mapper;

import domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import util.QueryEntity;

import java.util.List;
import java.util.Map;

@Mapper
public interface UserMapper {
    User findOne(Integer id);

    /**
     * 多个参数
     * @param name 姓名
     * @param sex  性别
     * @return     User
     */
    User findByCondition(@Param("username") String name, @Param("sex") String sex);

    /**
     * 将多个参数封装成Map #{}里就是Map的key
     * @param map   参数
     * @return      USER
     */
    User findByMap(Map<String,Object> map);

    /**
     * 测试#{}与${}的区别
     */
    List<User> findByUserName(@Param("name") String name);

    /**
     * 测试动态SQL if
     */
    List<User> findByMultiCondition(QueryEntity condition);

    /**
     * 测试动态SQL Choose when otherwise
     */
    List<User> queryActiveLike(QueryEntity queryEntity);

    /**
     * 测试动态SQL where
     */
    List<User> findByWhere(QueryEntity queryEntity);

    /**
     * 测试动态SQL trim where
     */
    List<User> findByTrimWhere(QueryEntity queryEntity);
}
